package xml和xsd的校验;

import org.junit.Test;

import java.io.*;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
/**
 *
 * x  :表示一些固定的值
 *
 * -   A!=null     则   B!=null     A存在  B必须也存在
 * -   A==null     则   B==null
 * -   A ==true 则 B!=null  如果 A !=true 则  B==null
 * -   A ==true    则 B==null
 * -   A.a !=null 则 B[].b == null
 * -   A.a !=null 则 B[].b != null
 * -   A.a !=null 则 B.b == null
 * -   A.a ==null 则 B.b != null
 * -   A.a ==null 则 B[].b != null
 * -   A[].a ==null  则   B[].b !=null
 * -   A[].a == x1 则 B[].b != x2
 * -   A[].a == x1 则 B[].b == null
 * -   A[].a == x1 则  B[].b == null  或  B[].b == x2
 * -   两个字段 至少存在一个
 *
 * -   A != null 且  B货币符!=C货币符 则 D(汇率)!=null
 *     A != null 且  B货币符==C货币符 则 D==null
 *     A == null  则 D==null
 *  -  A != x   则  B.b == null
 *      某个字段为 某个值时  字段a/字段b 才应该存在
 *
 *  -  A[].len >1   则   B[].b !=null
 *  -  A[].len == 1   则   B[].b ==null
 *  -  A = x  则   B==C==D ..== null
 *  -  A = x  则  B==C==D ..== null
 *  -  A =x   则  B / C !=null   两个字段 至少存在一个
 *  -  A!=x   则   B==C==D ..== null
 *  -  A.a =x  则    B[].len > 0
 *  -  A.a =x  则    B == null
 *  -  A.a == B[].len
 *  -  未经SEG明确批准   B == null  不能使用信封
 *  -  A!=null  则   某两个字段必须同时存在
 *  -  A1 !=null 则 B1 !=null
 *     A2 !=null 则 B2 !=null and A1 !=null
 *     A3 !=null 则 B3 !=null and A2 !=null
 *  -  A = x 则  B!=null and C==null
 *  -  A.a!=null 则 A.a == B[0].b+B[1].b+B[2].b + ...+ B[n].b
 *  -  A.a!=null and B[].b !=null 则 A.a的货币符必须和 B[].b 的货币符一致
 *  -  A = x     则 B==null
 *     否则   B!=null  and  C==null
 *  - A[] !=null  则  B!=null
 *  -  A.a == false 则 A.a2 == B[].len 且 B[].len > 0
 *     A.a == true  则 C.c[].cc != null / C.c[].cc.len > 0
 *                    且B[].len == 0
 *  -  A.a.aa == x 则 B.b.toString().substring(1,8) != "pacs.003"
 *  -  A != null 则 B[].b ==null
 *  -  A =x1 则 B[]可以不为空    则可提供承押记信息，以传达已为受指示代理人添加的费用
 *     A =x2  则B[].len >=1
 *     A = x3 则 B[] 随意
 *
 *
 *
 */

/**.
 * 不能跨层次提供附加信息
 * 补充信息 只能补充同一级别的信息，不能补充别的层级的信息
 * 建议
 *  1.   A!=null   则  建议 B.b  ==  A
 *  A!=null 则 A!=B     最终债权人只有在与债权人不同的情况下才能出席。
 *  A[]!=null 则 A[].a 货币符 与B相等
 *  A==true 则 B == 等于原始消息中的事务数
 *
 *
 *  账户标识不是通过诸如电子邮件地址或手机号码之类的传统标识来定义的，那么代理元素应该用于账户的标识
 */ ///358 页
public class 规则 {
// A 满足
    @Test //
    public void readTest() {
        Map<String,Object> m = new LinkedHashMap<>();
        Map<String,Object> m1 = new LinkedHashMap<>();
        m.put("Document",m1);

        m1.put("B","");

        System.out.println(gz(m)?"通过测试":"没通过测试");
    }


    private boolean gz(Map<String,Object> m) {
        File file = new File("File/规则/hello.txt");

        try (BufferedReader fR = new BufferedReader(new FileReader(file));) {

            String line0 = fR.readLine();

            while (line0 != null) {
                String line = line0; line0 = fR.readLine(); if(line.equals("")) continue;
                String s = line.substring(0, line.indexOf("#"));
                if(s.equals("")) continue;



            }
        } catch (FileNotFoundException e) {
            System.out.println("文件不存在");
        } catch (IOException e) {
            System.out.println("文件读取失败");
        }
        return true;
    }


/**
 *
 */
}
